Skip to content

fs: accept Buffer paths in fs.promises.cp#62950

Open
maruthang wants to merge 1 commit intonodejs:mainfrom
maruthang:fix-58869-cp-promise-buffer-paths
Open

fs: accept Buffer paths in fs.promises.cp#62950
maruthang wants to merge 1 commit intonodejs:mainfrom
maruthang:fix-58869-cp-promise-buffer-paths

Conversation

@maruthang
Copy link
Copy Markdown

fs.promises.cp threw ERR_INVALID_ARG_TYPE when given Buffer paths,
while fs.cpSync accepted them. The async helper at
lib/internal/fs/cp/cp.js calls path.resolve/dirname/join on the
raw input, and the path module rejects non-strings. The sync path
lives in C++ and accepts Buffer transparently via BufferValue.

Convert Buffer/Uint8Array paths to UTF-8 strings at the entry of
cpFn so the async implementation matches the documented
string | Buffer | URL contract and the sync behavior. URL paths
are already pre-converted by getValidatedPath upstream and so are
unaffected.

Fixes: #58869


Note: I was unable to run the project's test suite locally on this Windows host (no built out/Release/node). The changed files lint clean and pass node --check. Relying on CI for full verification — happy to iterate on any failures.

fs.promises.cp threw ERR_INVALID_ARG_TYPE when given Buffer paths,
while fs.cpSync accepted them. The async helper at
lib/internal/fs/cp/cp.js calls path.resolve/dirname/join on the
raw input, and the path module rejects non-strings. The sync path
lives in C++ and accepts Buffer transparently via BufferValue.

Convert Buffer/Uint8Array paths to UTF-8 strings at the entry of
cpFn so the async implementation matches the documented
string | Buffer | URL contract and the sync behavior. URL paths
are already pre-converted by getValidatedPath upstream and so are
unaffected.

Fixes: nodejs#58869
Signed-off-by: Maruthan G <[email protected]>
@nodejs-github-bot nodejs-github-bot added fs Issues and PRs related to the fs subsystem / file system. needs-ci PRs that need a full CI run. labels Apr 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fs Issues and PRs related to the fs subsystem / file system. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fsPromises.cp(...) inconsistencies and bugs

2 participants